import com.pobos.model.*
import com.google.appengine.api.datastore.*
import static com.google.appengine.api.datastore.FetchOptions.Builder.*



def concello = params.concello
def titulo = params.tituloActividade
def descricion = params.descricion
def tipo = params.tipo
def dataInicio = params.dataInicio

if (concello && titulo && tipo && dataInicio) {
	
	 Date data = Date.parse('dd/MM/yyyy', dataInicio) 
	
	 //Obtiene la entity del concello
	 def key = KeyFactory.createKey(Concello.class.simpleName, Long.parseLong(concello))
	 Entity concelloEntity = datastore.get(key)
	 
	 def sesion = request.getSession(true)
	 Entity perfilSesion = sesion.getAttribute('perfil')
	 
	 Text textoDescricion = new Text("")
	 
	 if (descricion) {
		 textoDescricion = new Text(descricion)
	 }
	
	 Entity entityActividade = new Entity("Actividade")
	 entityActividade.titulo = titulo
	 entityActividade.descricion = textoDescricion	 
	 entityActividade.tipo = tipo
	 entityActividade.dataInicio = data
	 entityActividade.dataCreacion = new Date()
	 entityActividade.concello = concello
	 entityActividade.nomeConcello = concelloEntity.nome
	 entityActividade.idPerfil = perfilSesion.key?.id
	 entityActividade.nomePerfil = perfilSesion.nome
	                             
	                             
	 entityActividade.save()
	 
   	 Item item = new Item([dataCreacion:new Date(),tipo:TipoItem.ACTIVIDADE.nome,
   	                       idConcello: concello,
   	                       item:entityActividade.key?.id])
	 
	 item.save()
	 
	 
	if (concelloEntity.items) {
		int numeroItems = concelloEntity.items.size()
		concelloEntity.items << item.id
		concelloEntity.numeroItems = ++numeroItems;
	} else {
		concelloEntity.items = [item.id]
        concelloEntity.numeroItems = 1
	}
	
	concelloEntity.save()
	
	if (perfilSesion.items) {
		int numeroItems = perfilSesion.items.size()
		perfilSesion.items << item.id
		perfilSesion.numeroItems = ++numeroItems;
	} else {
		perfilSesion.items = [item.id]
        perfilSesion.numeroItems = 1
	}
	
	perfilSesion.save()
	
	def tweetActividade = "${entityActividade.titulo}"
	def urlActividade = "http://ospobos.appspot.com/actividade/${entityActividade.key?.id}"
	
	defaultQueue << [
		countdownMillis: 10000,
		url: "/tweet.groovy",
		method: "POST",
		params: [tweet: tweetActividade, url: urlActividade]
	]

	
	 request.mensaxe="Actividade creada."
	 request.contido=""	
	 forward '/novaActividade.gtpl'
		 
	
} else {
	request.erro = "Faltan os datos obrigatorios."
	forward '/novaActividade.gtpl'
}



def obtenUsuarioSesion(String usuarioSesion) {
	def query = new Query(Usuario.class.simpleName)
	query.addFilter("nome", Query.FilterOperator.EQUAL, usuarioSesion)
	def preparedQuery = datastore.prepare(query)
	
	if (preparedQuery.countEntities() == 0) {
		return null;
	} else {
		if(preparedQuery.countEntities() > 1){
			return preparedQuery.asList(withLimit(1))[0]
		}else{
			return preparedQuery.asSingleEntity()
		}
	}
	
}   

def obtenPerfil(Long id) {
	def key = KeyFactory.createKey("Perfil", id)			
	return datastore.get(key)
}  



